Gerrit主从分布式部署 您所在的位置:网站首页 gerrit 数据库插件 Gerrit主从分布式部署

Gerrit主从分布式部署

2023-09-29 08:11| 来源: 网络整理| 查看: 265

目录 数据库配置从系统配置主系统配置用户配置踩过的坑1.报错:invalid privatekey: [B@5577dcb32.报错:status REJECTED_NONFASTFORWARD3.主服务器用户新加了key,插件日志显示修改已推送到从服务器,但没有生效 疑问 Gerrit分布式部署,是利用了gerrit的replication插件,实现了主从系统的搭建。其中主服务器可以用于正常的系统服务,而从服务器只能提供代码拉取服务,不可推送代码。从服务器只同步了git库的内容,没有同步index、data、db、etc等重要目录的内容,因此不适合做完整的数据备份。

主服务器地址:192.168.241.113 从服务器地址:192.168.241.114

数据库配置

Gerrit主从系统没有强制要求另起一个数据库,Gerrit3.x后都是使用了noteDB这种文件数据库。针对数据库的操作可以不处理,毕竟从服务器不用于推送代码。

从系统配置

1、在运行gerrit用户的 ~/.ssh/authorized_keys 文件中写入主系统服务器的ssh公钥(主服务器的 ~/.ssh/id_rsa.pub 内容,若没有可以用 ssh-keygen -t rsa 生成),添加用户信任,使得主节点可以直接ssh访问从节点,以便主节点可以push代码至从节点。

2、$site_path/etc/gerrit.config 中加一行 slave = true 。 在这里插入图片描述

主系统配置

1、确认安装了【Replication】插件,gerrit -> BROWSE -> Plugins 是否显示 replication,3.x版本会默认安装。

2、编写配置文件 ~/.ssh/config

Host * IdentityFile ~/.ssh/id_rsa PreferredAuthentications publickey

3、编写配置文件 $site_path/etc/replication.config:

#主从服务器gerrit启动用户不同时,url里建议指定用户 [remote "test"] url = ssh://[email protected]/home/gerrit/review_site/git/${name}.git replicateProjectDeletions = true mirror = true replicationDelay = 1

其他参数可参考文档: https://gerrit-documentation.storage.googleapis.com/Documentation/3.1.3/config-gerrit.html#accountPatchReviewDb.url

4、重启系统加载插件生效或者重新加载插件:

# 重启系统 sh $site_path/bin/gerrit.sh restart # 重新加载插件 ssh -p 29418 [email protected] gerrit plugin reload replication # 启动同步任务 ssh -p 29418 admin@localhost replication start --all #同步aa仓 ssh -p 29418 admin@localhost replication start aa

5、主服务器会自动同步数据到从服务器 详细信息可查看插件日志:$site_path/logs/replication_log 若没有插件日志,可查看 $site_path/logs/error_log 中插件是否启动失败

用户配置

用户通过配置 ~/.gitconfig 文件来实现代码上传和下载分流 即:git clone 114时,从114下载,上传到113,可下载后用 git remote -v 查看

[url "ssh://@192.168.241.113:29418"] pushInsteadOf = "ssh://@192.168.241.114:29418" 踩过的坑 1.报错:invalid privatekey: [B@5577dcb3

在这里插入图片描述 解决方法: 1.使用了高版本的openssh来生成公私钥,导致jsch解析密钥时出错 使用 ssh-keygen -m PEM -t rsa 重新生成旧格式的key 2.一部分仓能同步,一部分不能,同步失败的仓可能是空仓,只是创建了,没有新增任何代码,手动拷贝即可

2.报错:status REJECTED_NONFASTFORWARD

在这里插入图片描述 解决方法: 为了测试,我在从服务器建了不同的账号,导致有冲突,不得已把从服务器的All-Users.git删了重新同步,但Gerrit页面上没有Plugins的选项,不确定是否是删仓导致的 在这里插入图片描述

3.主服务器用户新加了key,插件日志显示修改已推送到从服务器,但没有生效

解决方法: 登陆主从服务器gerrit.basePath,查看修改仓a.git/refs/meta/config文件中的值是否一致,不一致则刷新下从服务器的缓存

ssh -p 29418 [email protected] gerrit flush-caches --all 疑问

1.所有修改,如新增用户、新增仓等,同步后,从服务器页面并不显示!

2.有的博客说需要在从服务器 $site_path/etc/gerrit.config 文件中设置 container.slave=true ,以节点模式运行系统,没有加似乎也没有问题! 答: 发现不加,从服务器可以进行页面访问,可以添加修改提交等操作,这样信息就不同步了。添加后则不可访问不可提交,可以下载,非常安全。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有